Miles Sound System SDK 7.2a

Creative's EAX 2 Properties

Discussion

The EAX 2 provider publishes many driver-level and sample-level properties that allow game developers to set interesting room styles. The EAX 2 provider also adds hardware support for occlusion and obstruction. Good use of room styles can add more to the "feel" of a game than the fanciest 3D spatialization.

When an HDIGDRIVER is opened with MSS_MC_EAX2 as the output channel specification, the following driver-level properties are accessible via AIL_output_filter_driver_property. Most applications should not control these properties directly; the standard digital audio API will provide plenty of control without sacrificing compatibility or causing internal state conflicts.

"Mute at maximum": this property controls whether sound is muted outside of the maximum distance (which is the default), or whether sound just stops falling off outside the maximum distance. As of this writing, the SBLive and Audigy drivers don't support mute at maximum.

"EAX environment selection" - this property allows you to set the reverb's room style. It should be set to one of the MILES_ROOM_TYPEconstants. You should generally use the AIL_set_room_type function instead of this property to set the room type for maximum compatibility.

"EAX effect volume": - this property controls the level at which the EAX reverb effect is applied to each voice. Its value ranges from 0.0 to 1.0. The maximum value of 1.0 turns overall reverb up to its highest possible level. Each time the value is halved, the reverb level is halved (decreased by 6 dB). Setting the effect volume to 0.0 turns off all reverb completely. This property accepts a 32-bit float (F32).

"EAX decay time": this property controls the decay time for the EAX reverb effect as it is applied to each voice, ranging from 0.1 to 20.0 seconds. This parameter determines the time in seconds required for the reverb effect to diminish by 60 dB. This property accepts a 32-bit float (F32).

"EAX damping": this property controls the damping factor (effect of frequency on decay time) for the EAX reverb effect as it is applied to each voice, ranging from 0.0 to 2.0. A value of 1.0 is treated as neutral, with the decay time equal for high, low, and mid-range frequencies. As the damping value increases above 1.0, the decay time of the high-frequency components of the sound increases relative to that of the mid-range and low-frequency components. This property accepts a 32-bit float (F32).

"EAX2 environment size": the Environment Size property sets the apparent size of the surrounding "room." The value of Environment Size can be considered a characteristic dimension of the room expressed in meters. Scaling Environment Size is equivalent to scaling all dimensions of the room by the same factor. This property accepts a 32-bit float (F32) from 1.0 to 100.0 linear meters.

"EAX2 environment diffusion": the Environment Diffusion property controls the echo density in the reverberation decay. It's set by default to 1.0, which provides the highest density. Reducing diffusion gives the reverberation a more "grainy" character that is especially noticeable with percussive sound sources. If you set a diffusion value of 0.0, the later reverberation sounds like a succession of distinct echoes. This property accepts a 32-bit float (F32) from 0.0 to 1.0 as a linear multiplier value.

"EAX2 room": the Room property is the master volume control for the reflected sound (both early reflections and reverberation) that EAX adds to all sound sources. It sets the maximum amount of reflections and reverberation added to the sound mix in the primary buffer (the listener). The value of the Room property ranges from 0 dB (the maximum amount) to -100 dB (no reflected sound at all). This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 room HF": the Room HF property further tweaks reflected sound by attenuating it at high frequencies. It controls a low-pass filter that applies globally to the reflected sound of all sound sources. The value of the Room HF property ranges from 0 dB (no filter) to -100 dB (virtually no reflected sound). This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 decay HF Ratio": the Decay HF Ratio property sets the spectral quality of the Decay Time parameter. It is the ratio of high-frequency decay time relative to the time set by Decay Time. The Decay HF Ratio value 1.0 is neutral: the decay time is equal for all frequencies. As Decay HF Ratio increases above 1.0, the high-frequency decay time increases so it's longer than the decay time at low frequencies. You hear a more brilliant reverberation with a longer decay at high frequencies. As the Decay HF Ratio value decreases below 1.0, the high-frequency decay time decreases so it's shorter than the decay time of the low frequencies. You hear a more natural reverberation. This property accepts a 32-bit float (F32) from 0.1 to 20.0 as a linear multiplier value.

"EAX2 reflections": the Reflections property controls the overall amount of initial reflections relative to the Room property. (The Room property sets the overall amount of reflected sound: both initial reflections and later reverberation.) The value of Reflections ranges from a maximum of 10 dB to a minimum of -100 dB (no initial reflections at all), and is corrected by the value of the Room property. The Reflections property does not affect the subsequent reverberation decay. This property accepts a 32-bit integer (S32) from -10000.0 to 1000.0 in hundredth of a dB.

"EAX2 reflections delay": the Reflections Delay property is the amount of delay between the arrival time of the direct path from the source to the first reflection from the source. It ranges from 0 to 300 milliseconds. You can reduce or increase Reflections Delay to simulate closer or more distant reflective surfaces-and therefore control the perceived size of the room. This property accepts a 32-bit float (F32) from 0.0 to 0.3 in seconds.

"EAX2 reverb": the Reverb property controls the overall amount of later reverberation relative to the Room property. (The Room property sets the overall amount of both initial reflections and later reverberation.) The value of Reverb ranges from a maximum of 20 dB to a minimum of -100 dB (no late reverberation at all). This property accepts a 32-bit integer (S32) from -10000.0 to 2000.0 in hundredth of a dB.

"EAX2 reverb delay": the Reverb Delay property defines the begin time of the late reverberation relative to the time of the initial reflection (the first of the early reflections). It ranges from 0 to 100 milliseconds. Reducing or increasing Reverb Delay is useful for simulating a smaller or larger room. This property accepts a 32-bit float (F32) from 0.0 to 0.1 in seconds.

"EAX2 room rolloff": the Room Rolloff property is one of two methods available in EAX to attenuate the reflected sound (containing both reflections and reverberation) according to source-listener distance. It's defined the same way as DirectSound's Rolloff Factor, but operates on reflected sound instead of direct-path sound. Setting the Room Rolloff Factor value to 1.0 specifies that the reflected sound will decay by 6 dB every time the distance doubles. Any value other than 1.0 is equivalent to a scaling factor applied to the quantity specified by ((Source listener distance) -(Minimum Distance)). Minimum distance is a DirectSound sound-source parameter that specifies the inner border for distance rolloff effects: if the source comes closer to the listener than the minimum distance, the direct-path sound isn't increased as the source comes closer to the listener, and neither is the reflected sound. This property accepts a 32-bit float (F32) from 0.1 to 10.0 as a linear multiplier value.

"EAX2 air absorption": the Air Absorption HF property controls the distance-dependent attenuation at high frequencies caused by the propagation medium. It applies to both the direct path and reflected sound. You can use Air Absorption HF to simulate sound transmission through foggy air, dry air, smoky atmosphere, and so on. The default value is -0.05 dB per meter, which roughly corresponds to typical condition of atmospheric humidity, temperature, and so on. Lowering the value simulates a more absorbent medium (more humidity in the air, for example); raising the value simulates a less absorbent medium (dry desert air, for example). This property accepts a 32-bit float (F32) from -100.0 to 0.0 as hundredths of a dB per meter.

"EAX2 flags": the Flags property uses its six low-order bits to set six listener-property flags. Five of these flags, the "scale flags," set the control that listener property environment Size has over five lower-level listener properties. The sixth flag prevents excessive decay times at high frequencies. See the EAX 2 documentation for more information on this property.

The following EAX 2 sample-level properties may be accessed by calling AIL_sample_stage_property with the SP_OUTPUT stage identifier:

"EAX2 sample direct": the Direct property is a low-level property that applies a relative correction to this sound source's direct-path intensity. (Direct-path intensity is the level of the sound source after attenuation for distance, orientation, and so on.) The Direct property allows you to apply a manual correction in addition to the effect of the DirectSound parameters distance, rolloff factor, orientation, and cone angles and to the effect of other EAX sound-source properties described in this section. The default value of 0 adds no correction to direct-path sound. This property accepts a 32-bit integer (S32) from -10000.0 to 1000.0 in hundredth of a dB.

"EAX2 sample direct HF": the Direct HF property is a related low-level property that applies a relative correction to the high-frequency component of the sound source's direct-path intensity. It has the same relationship to the high-frequency direct-path components of other DirectSound and EAX properties that the Direct property has to the full-frequency direct-path intensity. This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 sample room": the Room property is a low-level sound-source property that's defined the same way as the listener (global) Room property: it is the volume control for reflected sound (early reflections and reverberation). In this case, however, Room applies only to this sound source, and therefore affects only the reflected sound added to this source. It is an additive property; its setting is added to the total reflected sound value for this source that is specified by all other EAX listener and source properties. This property accepts a 32-bit integer (S32) from -10000.0 to 1000.0 in hundredth of a dB.

"EAX2 sample room HF": the Room HF property is a low-level sound-source property that is defined the same way as the listener Room HF property, but in this case is applied only to this sound source. It controls a low-pass filter that applies to the reflected sound added to this source. The value of Room HF ranges from 0 dB (no filter) to -100 dB (virtually no reflected sound). This is an additive property; its setting is added to the listener Room HF property and the other sound-source properties to determine how filtered the reflected sound for this source. This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 sample obstruction": the Obstruction property specifies the amount of obstruction muffling to apply to a sound source's direct-path sound. Obstruction occurs when an object lies between a sound source and a listener who occupy the same room. You should generally use the AIL_set_sample_obstruction function instead of this property to set the obstruction for compatibility with other 3D providers. The direct path from source to listener is muffled by the obstruction, but the reflected sound from the source remains unchanged. This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 sample obstruction LF ratio": the Obstruction LF Ratio property affects the spectral quality of obstruction set by the Obstruction property: it specifies the obstruction attenuation at low frequencies relative to the attenuation at high frequencies. The minimum value of 0.0 (the default value) specifies no attenuation at low frequencies; the maximum value of 1.0 specifies the same low-frequency attenuation as high-frequency attenuation. Note that adjusting Obstruction LF Ratio alone has no effect if Obstruction is set to 0. This property accepts a 32-bit float (F32) from 0.0 to 1.0 as a linear multiplier value.

"EAX2 sample occlusion": the Occlusion property specifies the amount of occlusion muffling to apply to a sound source's direct sound and to its reflected sound. Occlusion occurs when the listener is in one room or environment, the sound source is in another room or environment, and the listener hears the sound through a separating wall or through an opened or closed door or window. You should generally use the AIL_set_sample_occlusion function instead of this property to set the occlusion for compatibility with other 3D providers. Both the direct sound and the reflected sound from the sound source are muffled by the occlusion. This property accepts a 32-bit integer (S32) from -10000.0 to 0.0 in hundredth of a dB.

"EAX2 sample occlusion LF ratio": the Occlusion LF Ratio property affects the spectral quality of occlusion set by the Occlusion property: it specifies the occlusion attenuation at low frequencies relative to the attenuation at high frequencies. The minimum value of 0.0 specifies no attenuation at low frequencies; the maximum value of 1.0 specifies the same low-frequency attenuation as high-frequency attenuation. The default setting of 0.25 specifies that low frequencies are attenuated much less than high frequencies. Note that adjusting Occlusion LF Ratio alone has no effect if Occlusion is set to 0. This property accepts a 32-bit float (F32) from 0.0 to 1.0 as a linear multiplier value.

"EAX2 sample occlusion room ratio": the Occlusion Room Ratio property specifies the additional amount of occlusion attenuation to be applied to reflected sound (early reflections and reverberation). The minimum value of 0.0 specifies no additional reflected sound occlusion attenuation-that is, that direct-path and reflected sound attenuation occurs equally in the amount set by the Occlusion property. The maximum value of 10.0 specifies that the reflected sound is equal to 10 times the setting of Occlusion. This property accepts a 32-bit float (F32) from 0.0 to 10.0 as a linear multiplier value.

"EAX2 sample room rolloff": the Room Rolloff Factor property is a low-level sound-source property that is defined the same way as the listener (global) Room Rolloff property: it is one of two methods available in EAX to attenuate the reflected sound (early reflections and reverberation) according to source-listener distance. In this case, however, Room Rolloff applies only to this sound source, and therefore affects only the reflected sound generated by this source. Room Rolloff is an additive property; its setting is added to the listener Room Rolloff setting to get the final room rolloff multiplier value for that source. This property accepts a 32-bit float (F32) from 0.0 to 10.0 as a linear multiplier value.

"EAX2 sample air absorption": the Air Absorption Factor property is a multiplier value for the air absorption value set by the listener property Air Absorption HF. The resultant air absorption value applies only to this sound source. This property accepts a 32-bit float (F32) from 0.0 to 10.0 as a linear multiplier value.

"EAX2 sample outside volume HF": the Outside Volume HF property enhances the directivity effect provided by DirectSound 3D for individual sound sources. A directive sound source points in a specified direction. The source sounds at full volume when the listener is directly in front of the source; it's attenuated as the listener circles away from the front, with the maximum attenuation obtained in the back.

"EAX2 sample flags": the Flags property uses its three low-order bits to set three sound-source-property flags. These flags determine whether or not you want the EAX engine to automatically adjust the intensity and tonal color of the reflected sound or the tonal color of the direct-path sound for a source according to the setting of DirectSound's position and directivity parameters. See the EAX 2 documentation for more details on this property.

These EAX 2 property descriptions are taken almost verbatim from the EAX 2 documentation - see the EAX 2 docs for more information.

Be sure to review the How do I use multi-channel sound output in Miles? FAQ in conjunction with the material above.


Group: Creative EAX 2, 3, and 4 Providers
Related Functions: AIL_output_filter_driver_property, AIL_sample_stage_property, AIL_set_room_type, AIL_set_sample_obstruction, AIL_set_sample_occlusion
Related Basic Types: MILES_ROOM_TYPE
Related FAQs: How do I use multi-channel sound output in Miles?

For technical support, e-mail Miles3@radgametools.com
© Copyright 1991-2007 RAD Game Tools, Inc. All Rights Reserved.